-- -- Copyright 2014 Alessandro Gerlinger Romero -- -- This file is part of Hybrid fUML. -- -- Hybrid fUML is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- Hybrid fUML is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with Hybrid fUML. If not, see . -- ------------------------------------------------------------------------------------------------------------------------------------------------------------ -- APPROACH -- OpaqueBehaviorExecution is an abstract class, that should be extended for each primitive behavior -- done, in the package implementation in the extension ------------------------------------------------------------------------------------------------------------------------------------------------------------ -- real negation -- behavior -- neg_PrimitiveBehaviorsminus_RealFunctionsminus_Neg operatio_Neg :: FUML_Semantics_Classes_Kernel_Value -> Rule () operatio_Neg v = let pres = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "result") $ expr2list(function_Value_Execution_parameterValues(v)) in let px = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "x") $ expr2list(function_Value_Execution_parameterValues(v)) in if function_ParameterValue_values(pres) == {} then do -- creating new value nv <- (rule_FUML_Semantics_Classes_Kernel_Value_create FUML_Semantics_Classes_Kernel_RealValue) function_Value_PrimitiveValue_type(nv) := real function_Value_RealValue_value(nv):= -(function_Value_RealValue_value $ one (function_ParameterValue_values px)) function_ParameterValue_values(pres):={nv} else skip -- real multiplication -- behavior -- mult__PrimitiveBehaviorsminus_RealFunctionsminus_times operatio_times :: FUML_Semantics_Classes_Kernel_Value -> Rule () operatio_times v = let pres = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "result") $ expr2list(function_Value_Execution_parameterValues(v)) in let px = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "x") $ expr2list(function_Value_Execution_parameterValues(v)) in let py = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "y") $ expr2list(function_Value_Execution_parameterValues(v)) in if function_ParameterValue_values(pres) == {} then do -- creating new value nv <- (rule_FUML_Semantics_Classes_Kernel_Value_create FUML_Semantics_Classes_Kernel_RealValue) function_Value_PrimitiveValue_type(nv) := real function_Value_RealValue_value(nv):= (function_Value_RealValue_value $ one (function_ParameterValue_values px)) * (function_Value_RealValue_value $ one (function_ParameterValue_values py)) function_ParameterValue_values(pres):={nv} else skip -- real subtraction -- behavior -- minus__PrimitiveBehaviorsminus_RealFunctionsminus_minus operatio_minus :: FUML_Semantics_Classes_Kernel_Value -> Rule () operatio_minus v = let pres = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "result") $ expr2list(function_Value_Execution_parameterValues(v)) in let px = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "x") $ expr2list(function_Value_Execution_parameterValues(v)) in let py = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "y") $ expr2list(function_Value_Execution_parameterValues(v)) in if function_ParameterValue_values(pres) == {} then do -- creating new value nv <- (rule_FUML_Semantics_Classes_Kernel_Value_create FUML_Semantics_Classes_Kernel_RealValue) function_Value_PrimitiveValue_type(nv) := real function_Value_RealValue_value(nv):= (function_Value_RealValue_value $ one (function_ParameterValue_values px)) - (function_Value_RealValue_value $ one (function_ParameterValue_values py)) function_ParameterValue_values(pres):={nv} else skip -- real multiplication -- behavior -- add__PrimitiveBehaviorsminus_RealFunctionsminus_plus operatio_plus :: FUML_Semantics_Classes_Kernel_Value -> Rule () operatio_plus v = let pres = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "result") $ expr2list(function_Value_Execution_parameterValues(v)) in let px = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "x") $ expr2list(function_Value_Execution_parameterValues(v)) in let py = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "y") $ expr2list(function_Value_Execution_parameterValues(v)) in if function_ParameterValue_values(pres) == {} then do -- creating new value nv <- (rule_FUML_Semantics_Classes_Kernel_Value_create FUML_Semantics_Classes_Kernel_RealValue) function_Value_PrimitiveValue_type(nv) := real function_Value_RealValue_value(nv):= (function_Value_RealValue_value $ one (function_ParameterValue_values px)) + (function_Value_RealValue_value $ one (function_ParameterValue_values py)) function_ParameterValue_values(pres):={nv} else skip -- real less than -- behavior -- lt_equals__PrimitiveBehaviorsminus_RealFunctionsminus_le operatio_le :: FUML_Semantics_Classes_Kernel_Value -> Rule () operatio_le v = let pres = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "result") $ expr2list(function_Value_Execution_parameterValues(v)) in let px = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "x") $ expr2list(function_Value_Execution_parameterValues(v)) in let py = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "y") $ expr2list(function_Value_Execution_parameterValues(v)) in if function_ParameterValue_values(pres) == {} then do -- creating new value nv <- (rule_FUML_Semantics_Classes_Kernel_Value_create FUML_Semantics_Classes_Kernel_BooleanValue) function_Value_PrimitiveValue_type(nv) := boolean function_Value_BooleanValue_value(nv):= (function_Value_RealValue_value $ one (function_ParameterValue_values px)) <= (function_Value_RealValue_value $ one (function_ParameterValue_values py)) function_ParameterValue_values(pres):={nv} else skip -- boolean and -- behavior -- and_PrimitiveBehaviorsminus_BooleanFunctionsminus_And operatio_And :: FUML_Semantics_Classes_Kernel_Value -> Rule () operatio_And v = let pres = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "result") $ expr2list(function_Value_Execution_parameterValues(v)) in let px = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "x") $ expr2list(function_Value_Execution_parameterValues(v)) in let py = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "y") $ expr2list(function_Value_Execution_parameterValues(v)) in if function_ParameterValue_values(pres) == {} then do -- creating new value nv <- (rule_FUML_Semantics_Classes_Kernel_Value_create FUML_Semantics_Classes_Kernel_BooleanValue) function_Value_PrimitiveValue_type(nv) := boolean function_Value_BooleanValue_value(nv):= (function_Value_BooleanValue_value $ one (function_ParameterValue_values px)) && (function_Value_BooleanValue_value $ one (function_ParameterValue_values py)) function_ParameterValue_values(pres):={nv} else skip -- boolean not -- behavior -- primitiveBehaviorsminus_BooleanFunctionsminus_Not operatio_Not :: FUML_Semantics_Classes_Kernel_Value -> Rule () operatio_Not v = let pres = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "result") $ expr2list(function_Value_Execution_parameterValues(v)) in let px = head $ filter(\pv -> function_Parameter_NamedElement_name(function_ParameterValue_parameter pv) == "x") $ expr2list(function_Value_Execution_parameterValues(v)) in if function_ParameterValue_values(pres) == {} then do -- creating new value nv <- (rule_FUML_Semantics_Classes_Kernel_Value_create FUML_Semantics_Classes_Kernel_BooleanValue) function_Value_PrimitiveValue_type(nv) := boolean function_Value_BooleanValue_value(nv):= not (function_Value_BooleanValue_value $ one (function_ParameterValue_values px)) function_ParameterValue_values(pres):={nv} else skip